package com.example.myapplication.part18;

import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.example.myapplication.R;

public class Part18Activity extends AppCompatActivity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_part18);

        // 1. 内部类监听
        findViewById(R.id.btn1).setOnClickListener(new InnerListener());

        // 2. 外部类监听
        findViewById(R.id.btn2).setOnClickListener(new OuterListener());

        // 3. 接口监听
        findViewById(R.id.btn3).setOnClickListener(this);

        // 4. 布局绑定监听（XML方式）
    }

    // 内部类监听
    class InnerListener implements View.OnClickListener {
        @Override
        public void onClick(View v) {
            showToast("内部类点击");
        }
    }

    // 外部类监听
    static class OuterListener implements View.OnClickListener {
        @Override
        public void onClick(View v) {
            showToast(v.getContext(), "外部类点击");
        }
    }

    // 接口监听
    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.btn3) {
            showToast("接口点击");
        }
    }

    // XML绑定监听（需在XML中设置 android:onClick="bindClick"）
    public void bindClick(View v) {
        showToast("布局绑定点击");
    }

    // 统一Toast方法
    private void showToast(String msg) {
        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    }

    // 带Context参数的Toast（供外部类使用）
    private static void showToast(Context ctx, String msg) {
        Toast.makeText(ctx, msg, Toast.LENGTH_SHORT).show();
    }
}
